#include "softwareinfo.h"

SoftwareInfo::SoftwareInfo(QObject *parent) :
    QObject(parent)
{
}


/*
 * 函数名称：    getCurVersionInfo()
 * 函数版本：        1.0.0
 * 作者：            HXL
 * 创建日期：    2017.3.16
 * 函数功能：    获取当前版本信息
 * 输入参数：    无
 * 输出参数：    无
 * 返回值：      返回当前版本信息
*/
QString SoftwareInfo::getCurVersionInfo()
{
    QString text = "";
    /**************************         当前版本信息        *********************************/
    //text += "*1） 当前版本信息：\n";
    text += "\t【软件名称】：Android日志分析工具\n";
    text += "\t【软件版本】：V3.5.3\n";
    text += "\t【发布日期】：2017/6/26\n";
    text += "\t【作者】：何晓龙  964195140@qq.com\n";
    text += "\t【版本更新及技术交流QQ群】：513138238\n";
    text += "\t【博客】：http://blog.csdn.net/u013662621/article/details/70257940\n";
    text += "\t【论坛】：http://bbs.csdn.net/topics/392158380\n";
    
    
    return text;
}


/*
 * 函数名称：    getSoftwareFuncInfo()
 * 函数版本：        1.0.0
 * 作者：            HXL
 * 创建日期：    2017.3.16
 * 函数功能：    获取软件功能简介
 * 输入参数：    无
 * 输出参数：    无
 * 返回值：      返回软件功能简介
*/
QString SoftwareInfo::getSoftwareFuncInfo()
{
    QString text = "";
    /**************************         软件功能简介        *********************************/
    //text += "*2） 软件功能简介：\n";
    text += "\t【软件运行要求】显示器分辨率不得小于 1038 x 306；\n";
    text += "\t【日志内容定位信息头格式】\"[ (xxx.java:xxx)#xxx ] \"\n";
    text += "\t【1】左侧Filters为日志头过滤器栏，当载入日志文件时会自动识别；\n";
    text += "\t【2】日志内容会自动根据打印等级显示不同的颜色以区分；\n";
    text += "\t【3】可通过设置右上角的日志等级筛选出大于等于该等级的打印信息；\n";
    text += "\t【4】可通过中上方的搜索框搜索日志内容，搜索规则为：任意字符串，大小写不敏感；\n";
    text += "\t【5】可通过设置时间过滤器的起止时间来筛选出在该时间范围内的所有日志信息；\n";
    text += "\t【6】可通过设置信息过滤器的开关来选择是否显示对应的信息；\n";
    text += "\t【7】可通过工具栏中模式切换按钮在“离线查看模式”和“实时终端模式”之间切换；\n";
    text += "\t【8】可通过工具栏中ADB连接按钮，进行ADB设备的扫描、连接、断开等操作；\n";
    
    text += "\t【9】软件底部显示当前工作的状态，如：工作模式、ADB设备状态、当前打开的日志\n";
    text += "\t     文件路径；\n";
    
    text += "\t【10】退出实时终端模式时可将日志缓存文件导出另存；\n";
    text += "\t【11】可在软件设置中配置外部ADB工具的路径；\n";
    text += "\t【12】对日志内容解析后，可提供：行号、时间、等级、PID进程号、Tag、文本信息；\n";
    
    text += "\t【13】在实时终端模式中，ADB设备断开或丢失后可自动重连3次，并自动恢复日志内\n";
    text += "\t      容的显示，若3次重连失败则退出ADB环境；\n";
    
    text += "\t【14】可通过将鼠标移动到Tag列表栏的某一项上，预览该Tag的完整信息；\n";
    text += "\t【15】文件加载过程有进度条提示；\n";
    text += "\t【16】可通过菜单栏中最近打开的文件选项快速打开文件；\n";
    text += "\t【17】可通过快捷键“Ctrl+G”或者工具栏中的对应图标快速跳转到指定行；\n";
    text += "\t【18】支持保存软件的全局配置属性和重要数据到配置文件中，待软件下次启\n";
    text += "\t      动时可恢复上一次的操作环境；若该文件不存在，则会自动生成配置\n";
    text += "\t      文件；\n";
    
    text += "\t【19】支持软件配置文件的备份和导入；\n";
    text += "\t【20】支持快捷键Ctrl+C复制当前选中的日志内容；\n";
    text += "\t【21】支持进程过滤器，即仅显示与选中进程相关的日志信息；\n";
    text += "\t【22】支持在具有加密策略的电脑上使用该软件；\n";
    
    text += "\t【23】优化实时终端模式下日志内容的刷新，新增文件光标定位器，并优化日志Tag提\n";
    text += "\t       提器，使得最终的日志内容刷新率高达50~100Hz，且刷新频率不再受文件大\n";
    text += "\t       小的影响，此机制的实现使得实时监控的连续时间可无限长；\n";
    
    text += "\t【24】新增日志Tag系统级过滤器，主要过滤输出数量占比较大且不具备很大分析价值\n";
    text += "\t       的内容，既可以让更有价值的内容快速呈现，也很大程度的节省了内存的占用；\n";
    
    text += "\t【25】新增日志内容搜索进度条的显示，提醒用户当前的搜索状态；\n";
    
    text += "\t【26】软件启动前新增重构并删除上一次软件异常闪退时未删除的日志缓存文件，并提\n";
    text += "\t       示用户在删除前是否另存为；\n";
    
    text += "\t【27】新增对大文件进行分页加载的机制，并设置有快速页跳转的功能（只有当首次遍\n";
    text += "\t       历过所有的页数据后，才可跳转任意页），该机制的实现使得离线分析不再受\n";
    text += "\t       文件大小的限制，同时也保证了软件运行时不会无节制的占用系统内存；\n";
    
    text += "\t【28】新增实时模式下监控的日志行数达到设定的最大值后自动清空全局数据库，避免\n";
    text += "\t       长时间的监控造成大量内存的占用；\n";
    
    text += "\t【29】新增实时终端模式下，ADB设备非人为断开或非人为退出终端模式时，自动备份\n";
    text += "\t       当前的日志缓存文件，后期再对这些备份文件进行分析重构，并还原为一个完\n";
    text += "\t       整的日志文件，且设有重构进度条的显示；\n";
    
    text += "\t【30】新增Tag日志头种类及其数量分析功能，并以图标的形式展现；\n";
    text += "\t【31】新增软件重启功能；\n";
    text += "\t【32】新增实时模式下清空当前显示的功能；\n";
    
    text += "\t【33】新增设置属性“是否启用调试指定APP”，输入eclipse或android studio\n";
    text += "\t       中正在调试的APP包名，如“com.example.uidemo”，点击下载程序后，该\n";
    text += "\t       工具可自动识别并跳转到该APP的进程，并显示相关日志信息；\n";
    
    text += "\t【34】支持安装APK到指定设备的功能；\n";


    
    return text;
}


/*
 * 函数名称：    getUpdateInfo()
 * 函数版本：        1.0.0
 * 作者：            HXL
 * 创建日期：    2017.3.16
 * 函数功能：    获取更新日志索引信息
 * 输入参数：    无
 * 输出参数：    无
 * 返回值：      返回更新日志索引信息
*/
QStringList SoftwareInfo::getUpdateInfo()
{
    QStringList infoList;
    QString text = "";
    
    /**************************         V1.0.0版        *********************************/
    text = "\t【V1.0.0】：初始版  2017/2/6  何晓龙  964195140@qq.com\n";
    infoList.append(text);

    
    /**************************         V2.0.0版        *********************************/
    text = "\t【V2.0.0】：升级版  2017/2/9  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    
    /**************************         V3.0.0版        *********************************/
    text = "\t【V3.0.0】：升级版  2017/3/17  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    /**************************         V3.1.1版        *********************************/
    text = "\t【V3.1.1】：优化版  2017/4/21  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    /**************************         V3.2.2版        *********************************/
    text = "\t【V3.2.2】：优化版  2017/4/25  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    /**************************         V3.4.2版        *********************************/
    text = "\t【V3.4.2】：优化版  2017/5/5  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    /**************************         V3.5.2版        *********************************/
    text = "\t【V3.5.2】：优化版  2017/5/19  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    /**************************         V3.5.3版        *********************************/
    text = "\t【V3.5.3】：优化版  2017/6/1  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    /**************************         V3.5.4版        *********************************/
    text = "\t【V3.5.4】：优化版  2017/7/17  何晓龙  964195140@qq.com\n";
    infoList.append(text);
    
    return infoList;
}


/*
 * 函数名称：    getUpdateInfoDetails()
 * 函数版本：        1.0.0
 * 作者：            HXL
 * 创建日期：    2017.3.16
 * 函数功能：    获取更新日志详细信息
 * 输入参数：    无
 * 输出参数：    无
 * 返回值：      返回更新日志详细信息
*/
QStringList SoftwareInfo::getUpdateInfoDetails()
{
    QStringList infoList;
    QString text = "";
    /**************************         更新日志        *********************************/
    
    /**************************         V1.0.0版        *********************************/
    text = "";
    //text += "\t【V1.0.0】：初始版  2017/2/6  何晓龙  964195140@qq.com\n";
    text += "\t\t【1】：支持Tag过滤；\n";
    text += "\t\t【2】：支持打印等级过滤；\n";
    text += "\t\t【3】：支持文本搜索；\n";
    text += "\t\t【4】：支持根据打印等级以不同的颜色显示内容；\n";
    text += "\t\t【5】：支持自动提取所有Tag种类以及其对应的数量；\n";
    text += "\t\t【6】：支持文件的打开与关闭；\n";
    text += "\t\t【7】：支持设置字体；\n";
    infoList.append(text);

    
    /**************************         V2.0.0版        *********************************/
    text = "";
    //text += "\t【V2.0.0】：升级版  2017/2/9  何晓龙  964195140@qq.com\n";
    text += "\t\t【1】：新增时间过滤器；\n";
    text += "\t\t【2】：新增信息过滤器；\n";
    text += "\t\t【3】：支持定位信息头的识别；\n";
    text += "\t\t【4】：新增文件编码格式的设置；\n";
    text += "\t\t【5】：新增当前文件重载功能；\n";
    infoList.append(text);
    
    
    /**************************         V3.0.0版        *********************************/
    text = "";
    //text += "\t【V3.0.0】：升级版  2017/3/17  何晓龙  964195140@qq.com\n";
    text += "\t\t【1】：新增“实时终端模式”，通过ADB连接Android设备，并支持ADB设\n";
    text += "\t\t       备扫描、连接、断开、状态显示等功能，且可在“离线查看模式”\n";
    text += "\t\t       和“实时终端模式”之间随意切换；\n";
    
    text += "\t\t【2】：新增退出实时终端模式时可将日志缓存文件导出另存为的功能；\n";
    text += "\t\t【3】：新增设置菜单中ADB路径设置的功能；\n";
    text += "\t\t【4】：新增进程PID号的显示，并在信息过滤器中增加对PID的过滤开关；\n";
    
    text += "\t\t【5】：新增实时终端模式下ADB设备连接断开或丢失后自动重连，并自动\n";
    text += "\t\t       恢复实时显示日志内容的功能；\n";
    
    text += "\t\t【6】：为日志Tag列表栏新增鼠标移动到Tag上时，自动弹出Tip提示，提示\n";
    text += "\t\t       内容为该Tag的完整信息，以防止当Tag内容过长而无法完整显示；\n";
    
    text += "\t\t【7】：升级ADB命令执行接口，之前为主线程（即UI线程）中阻塞式执行\n";
    text += "\t\t       ADB命令，若命令执行时间较长，容易导致UI线程长时间无响应，\n";
    text += "\t\t       严重地影响了用户体验；升级后为新建一个专门执行ADB命令的后\n";
    text += "\t\t       台线程，使其与主线程互相独立运行，通过信号与槽的方式进行数\n";
    text += "\t\t       据交换，如此便可以在不影响UI线程的前提下更好地执行ADB命令，\n";
    text += "\t\t       提高了用户体验度；\n";
    
    text += "\t\t【8】：新增日志文件加载进度条显示，以更好地提示用户当前的加载进度；\n";
    
    text += "\t\t【9】：新增软件工具栏，将软件中常用的操作添加到工具栏中，并配备合\n";
    text += "\t\t       理的图标和Tip提示信息，且工具栏可选择显示或隐藏，以及存放\n";
    text += "\t\t       的位置（顶部、底部）等，此功能的增加提高了用户的操作性和软\n";
    text += "\t\t       件使用的简易性；\n";
    
    text += "\t\t【10】：重新设计“关于软件窗口”的布局方式，将软件功能简介和更新日志\n";
    text += "\t\t        的详细信息默认隐藏，通过“查看细节”按钮显示详细信息；\n";
    
    text += "\t\t【11】：软件菜单栏中新增最近打开文件的历史记录功能，可设置最大记录\n";
    text += "\t\t        的文件数量，可通过历史菜单直接选择文件将其打开，无须每次\n";
    text += "\t\t        都通过系统的文件管理器方式打开；\n";
    
    text += "\t\t【12】：新增跳转到日志文件的指定行的功能，且设有快捷键“Ctrl+G”，可\n";
    text += "\t\t        快速跳转到需要查看的行，并将其高亮显示；\n";
    
    text += "\t\t【13】：新增退出软件确认对话框功能，防止用户误操作使软件直接退出，而\n";
    text += "\t\t        导致分析数据的丢失；\n";
    
    text += "\t\t【14】：新增软件全局配置文件的功能：可记录软件的属性设置、文件历史\n";
    text += "\t\t        浏览记录、以及一些重要的数据到该文件中，待软件下次启动时\n";
    text += "\t\t        可恢复上一次操作的环境；实现原理：定义配置文件的语法格式，\n";
    text += "\t\t        创建能够对该文件进行识别、解析、读写的解析器，然后再主程\n";
    text += "\t\t        序中通过该解析器来操作配置文件；\n";
    
    text += "\t\t【15】：优化对日志数据内容的解析过程以及日志文件的加载，使解析效率\n";
    text += "\t\t        提高了70%多；\n";
    
    text += "\t\t【16】：优化日志内容显示功能，通过加入显示缓冲区的机制，每次仅加载\n";
    text += "\t\t        显示缓冲区中的数据，大大提高了显示速度；\n";
    
    text += "\t\t【17】：优化实时终端模式显示日志的方式，通过加入增量式解析的机制，\n";
    text += "\t\t        每次仅解析新增的内容，不必重复解析之前已经解析过的内容，如\n";
    text += "\t\t        此可将显示速度提升十倍以上，很好的达到了实时显示的效果；\n";
    
    text += "\t\t【18】：优化ADB服务器启动功能，增加等待对话框，并新增3次自动重连功\n";
    text += "\t\t        能，若3次连接失败，则退出ADB环境；\n";
    
    text += "\t\t【19】：优化Tag列表栏的显示，对所有Tag进行按字母排序，以便用户快速\n";
    text += "\t\t        查找需要查看的Tag；\n";
    
    text += "\t\t【20】：优化自动调整标签栏位置的功能，使其自动调整更加智能且定位准确；\n";
    
    text += "\t\t【21】：优化软件状态栏显示方式，使其更加直观舒适；\n";
    
    text += "\t\t【22】：修复滚动日志内容到最低端后，仍可继续滚动的BUG；\n";
    
    text += "\t\t【23】：修复日志内容显示区域滚动条有时往上滑动时无法滑动的BUG；\n";
    
    text += "\t\t【24】：修改日志缓存文件的路径，并增加路径的安全性判断和自动建立的\n";
    text += "\t\t        功能；\n";
    
    text += "\t\t【25】：修复当退出实时终端模式时，ADB重连导致再次进入终端模式的BUG；\n";
    
    text += "\t\t【26】：修复BUG，当快速重复点击“重载文件”按钮时导致多次加载同一\n";
    text += "\t\t        文件。修改为仅当一个文件加载完毕后才可继续下一步操作；\n";
    
    text += "\t\t【27】：修复BUG，当快速重复点击“连接ADB设备”按钮时导致多次重复执\n";
    text += "\t\t        行扫描ADB设备的操作，以至于等待对话框无法正常关闭，而使\n";
    text += "\t\t        软件进入假死状态。修改为仅当一次扫描完成后才可继续下一次\n";
    text += "\t\t        扫描操作；\n";
    
    text += "\t\t【28】：【注意】实时终端模式下，每次只能连续实时监控1小时，超过该时\n";
    text += "\t\t        间后由于日志文件过大，导致解析时间比较长，无法达到实时显示\n";
    text += "\t\t        的效果；但后台仍然在将日志内容输出到缓存文件，可等待执行完\n";
    text += "\t\t        后再将该文件导出后进行离线分析即可；\n";
    infoList.append(text);
    
    /**************************         V3.1.1版        *********************************/
    text = "";
    text += "\t\t【1】：新增软件退出时自动删除缓存目录；\n";
    text += "\t\t【2】：新增配置文件的备份和导入；\n";
    text += "\t\t【3】：新增ADB连接状态指示灯显示；\n";
    text += "\t\t【4】：新增进程过滤器，即只显示选中进程的相关日志信息；\n";
    text += "\t\t【5】：更改软件配置文件存储路径为系统用户（即C盘中我的文档）的路径；\n";
    
    text += "\t\t【6】：优化在线ADB设备信息显示，增加厂商、型号、系统版本号、SDK版本\n";
    text += "\t\t       号等信息；\n";
    
    text += "\t\t【7】：修复由于重复显示等待对话框却无法正常关闭，导致软件死机的BUG；\n";
    text += "\t\t【8】：修复少数格式的PID进程号解析错误的BUG；\n";
    infoList.append(text);
    
    /**************************         V3.2.2版        *********************************/
    text = "";
    text += "\t\t【1】：更改日志缓存文件后缀名为“.log”，以便支持在具有加密策略的电\n";
    text += "\t\t       脑上使用该软件，为了兼容旧版本，仍支持对txt格式的日志文件\n";
    text += "\t\t       进行离线分析；\n";
    
    text += "\t\t【2】：优化日志缓存文件另存为的功能，使用户确定退出终端模式后，立即\n";
    text += "\t\t       停止日志输出；\n";
    
    text += "\t\t【3】：优化Filter栏选项排序为大小写不敏感；\n";
    text += "\t\t【4】：修复实时终端模式下Filter栏的项乱跳的BUG；\n";
    text += "\t\t【5】：修复实时终端模式下滑动滚动条导致软件闪退的BUG；\n";
    infoList.append(text);
    
    /**************************         V3.4.2版        *********************************/
    text = "";
    text += "\t\t【1】：优化实时终端模式下日志内容刷新的代码：\n";
    text += "\t\t       *1）优化增量式文件加载器，新增文件光标位置定位器，每次加载时\n";
    text += "\t\t       直接跳转到上一次的位置；\n";
    text += "\t\t       *2）优化日志Tag提取器，将之前的每次计算所有Tag改为增量式计\n";
    text += "\t\t       算，即每次仅计算新增的内容，然后与之前的叠加即可；\n";
    text += "\t\t       *3）通过以上方式的优化后，实时模式下日志内容的刷新速度将不再\n";
    text += "\t\t       受文件大小的影响，且刷新时间基本在20ms以内，即显示刷新频率在\n";
    text += "\t\t       50Hz以上，真正意义上实现了日志内容实时刷新的功能；\n";
    
    text += "\t\t【2】：新增日志Tag系统级过滤器，主要过滤掉输出数量占比较大且不具备很\n";
    text += "\t\t       大分析价值的内容，既可以让更有价值的内容快速呈现，也很大程度\n";
    text += "\t\t       的节省了内存的占用。该过滤器共分为一级过滤和二级过滤，一级过\n";
    text += "\t\t       滤为完全不具备分析价值的内容，二级过滤为极少数情况可能会有一\n";
    text += "\t\t       点分析价值；\n";
    
    text += "\t\t【3】：新增日志内容搜索进度条显示，提醒用户当前的搜索状态，避免当搜索\n";
    text += "\t\t       时间较长时给用户一种软件假死的现象；\n";
    
    text += "\t\t【4】：软件启动前新增删除上一次软件异常闪退时未删除的日志缓存文件，并\n";
    text += "\t\t       提示用户在删除前是否另存为；\n";
    
    text += "\t\t【5】：新增对大文件进行分页加载的机制，可自动识别是否需要对文件进行分\n";
    text += "\t\t       页，并设置有快速页跳转的功能；\n";
    text += "\t\t       *该机制的目的）：使离线分析日志文件不再受文件大小的限制，同时\n";
    text += "\t\t       保证了软件运行过程中不会无节制的占用系统内存；\n";
    text += "\t\t       *该机制的原理）：每次加载当前页后才能确定下一页的光标偏移量，\n";
    text += "\t\t       因此只有当第一次加载过所有页后，才可随意的进行页跳转，否则只\n";
    text += "\t\t       能跳转下一页或前面的所有页；\n";
    
    text += "\t\t【6】：新增实时模式下监控的日志行数达到设定的最大值后自动清空全局数据\n";
    text += "\t\t       库，避免长时间的监控造成大量内存的占用（注意：此处清空仅为软\n";
    text += "\t\t       件中数据清空，而实际缓存文件中的数据仍然是存在的）；\n";
    
    text += "\t\t【7】：新增实时终端模式下，ADB设备非人为断开或非人为退出终端模式时，\n";
    text += "\t\t       自动备份当前的日志缓存文件，后期再对这些备份文件进行分析重\n";
    text += "\t\t       构，还原为一个完整的日志文件，并对重构的过程设有进度条显示；\n";
    
    text += "\t\t【8】：新增Tag日志头种类及其数量分析功能，并以图表的形式展现；\n";
    
    text += "\t\t【9】：优化软件退出时若从未开启过ADB服务，则无需执行ADB服务的关闭；\n";
    
    text += "\t\t【10】：修复有时软件退出后仍有等待对话框在显示的BUG；\n";
    text += "\t\t【11】：修复无法输出系统进程system_process的部分日志信息的BUG；\n";
    text += "\t\t【12】：修复文件加载进度条有时显示异常导致卡死，且无法关闭的BUG；\n";
    
    text += "\t\t【13】：修复进行进程筛选后再执行系统过滤设置，在文件重载的过程中软\n";
    text += "\t\t        件死机闪退的BUG；\n";
    
    text += "\t\t【14】：修复行跳转到最后一行时偶尔造成软件死机闪退的BUG；\n";
    infoList.append(text);
    
    /**************************         V3.5.2版        *********************************/
    text = "";
    text += "\t\t【1】：新增软件重启功能；\n";
    text += "\t\t【2】：新增实时模式下清空当前显示的功能；\n";
    
    text += "\t\t【3】：新增设置属性“是否启用调试指定APP”，在输入框输入eclipse或\n";
    text += "\t\t       android studio中正在调试的APP包名，如“com.example.uidemo”，\n";
    text += "\t\t       点击下载程序后，该工具可自动识别并跳转到该APP的进程，并显\n";
    text += "\t\t       示相关日志信息；\n";
    
    text += "\t\t【4】：优化实时模式下切换打印等级后，重新显示所有信息（旧版为仅显示\n";
    text += "\t\t       后面更新的信息）；\n";
    
    text += "\t\t【5】：优化进程筛选执行后仅显示该进程的信息（旧版为只要包含了该进程的\n";
    text += "\t\t       都会显示）；\n";
    
    text += "\t\t【6】：优化日志缓存文件重构过程，禁止重构进度的人为关闭，防止用户关闭\n";
    text += "\t\t       该进程后导致日志文件破损；\n";
    
    text += "\t\t【7】：优化文件加载进度条最大值的设定方式，自动识别文件是否需要进行分\n";
    text += "\t\t       页处理；\n";
    
    text += "\t\t【8】：优化日志内容显示区域中单行被选中时的显示方式，改为前景色不变，\n";
    text += "\t\t       背景色高亮；\n";
    
    text += "\t\t【9】：修复部分设备采用Log.wtf()打印时实际输出为'F'标志，导致无法解\n";
    text += "\t\t       析该内容的BUG，而实际其相当于'A'等级的日志，故新增对其的支持；\n";
    
    text += "\t\t【10】：修复日志显示区域自定义的滚动条偶尔出现滚动紊乱的BUG；\n";
    text += "\t\t【11】：修复特殊情况下软件配置文件备份失败的BUG；\n";
    text += "\t\t【12】：修复ADB设备名中包含有'-'符号的设备无法连接的BUG；\n";
    text += "\t\t【13】：修复等待对话框gif动画无法显示的BUG；\n";
    text += "\t\t【14】：修复当日志显示区域获取当前项为空时导致软件死机闪退的BUG；\n";
    infoList.append(text);
    
    /**************************         V3.5.3版        *********************************/
    text = "";
    text += "\t\t【1】：新增安装APK到指定设备的功能；\n";
    
    text += "\t\t【2】：优化软件中主线程阻塞延时等待的实现机制，避免有时报已有QEventLoop\n";
    text += "\t\t       事件在运行的警告；\n";
    
    text += "\t\t【3】：优化ADB设备名显示格式，以缩短其显示长度；\n";
    
    text += "\t\t【4】：优化显示日志等级的控制机制，只有在启动软件时自动初始化为VERBOSE，\n";
    text += "\t\t       其他任何情况都保持不变，除非手动改变；\n";
    
    text += "\t\t【5】：修复列表显示中设置和获取指定行可能存在行无效或获取对象为null而导\n";
    text += "\t\t       致软件死机闪退的BUG；\n";
    
    text += "\t\t【6】：修复有时ADB设备连接断开后仍显示连接成功状态的BUG；\n";
    text += "\t\t【7】：修复ADB状态检测定时器与日志文件检测定时器冲突导致ADB不断重连的BUG；\n";
    text += "\t\t【8】：修复实时终端模式下ADB连接断开后无法自动重连的BUG；\n";
    text += "\t\t【9】：修复软件重启选择是或否都会重启的BUG；\n";
    
    text += "\t\t【10】：修复实时终端模式下长时间运行后内存占用逐渐增大导致内存泄漏而使软件\n";
    text += "\t\t        异常闪退的BUG，通过优化代码以及主动释放频繁申请的内存来解决；\n";
    
    text += "\t\t【11】：修复实时终端模式下变换软件窗口尺寸时偶尔出现软件异常闪退的BUG；\n";
    
    text += "\t\t【12】：修复实时终端模式下updateFile()接口执行过程中出现异常后无法正常\n";
    text += "\t\t        退出，并死循环在此处的BUG；\n";
    infoList.append(text);
    
    /**************************         V3.5.4版        *********************************/
    text = "";
    text += "\t\t【1】：新增android studio自带日志工具导出的日志格式的解析；\n";
    
    text += "\t\t        退出，并死循环在此处的BUG；\n";
    infoList.append(text);
    
    return infoList;
}
